package com.caibq.test;

import cn.hutool.core.convert.Convert;
import lombok.Data;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

// 自定义类，用于存储每个接口等级的统计信息
@Data
class InterfaceStats {
    private int total; // 接口总数
    private int completed; // 已完成数
    private int incomplete; // 未完成数

    public InterfaceStats(int total, int completed) {
        this.total = total;
        this.completed = completed;
        this.incomplete = total - completed; // 未完成数 = 总数 - 已完成数
    }

    // getter和setter省略

    // 可以添加其他需要的统计方法，比如完成比例等
}

public class Main {
    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<>();
        map.put("storage", 1);
        Convert.toInt(map.get("storage"));
        System.out.println(Convert.toInt(map.get("storage")));
        Object storage = map.get("storage");

        // 定义Map容器，用于存储每个接口等级的统计信息
        Map<String, InterfaceStats> statsMap = new HashMap<>();

        // 假设有一个方法getInterfaceList()返回接口列表
        // 这里模拟这个方法返回的数据
        List<Interface> interfaceList = getInterfaceList();

        // 初始化统计信息
        for (Interface interf : interfaceList) {
            String grade = interf.getGrade();
            int total = 1;   //


            // 如果是第一次遇到这个等级的接口，则创建新的InterfaceStats对象
            // 否则更新现有的InterfaceStats对象
            statsMap.compute(grade, (key, value) -> {
                if (value == null) {
                    return new InterfaceStats(total, interf.getCompleted()/interf.getTotal()==1?1:0);
                } else {
                    value.setTotal(value.getTotal()+1);
                    value.setCompleted(interf.getCompleted()/interf.getTotal()==1?value.getCompleted()+1:value.getCompleted());
                    value.setIncomplete(value.getTotal()-value.getCompleted());
                    return value;
                }
            });
        }

        // statsMap现在包含了所有等级接口的统计信息
        // 你可以遍历这个Map，并将结果转换为前端需要的格式
    }

    // 这个方法应该从实际的数据源获取接口列表
    private static List<Interface> getInterfaceList() {
        // 这里是模拟数据
        return Arrays.asList(
                new Interface("A", 10, 5),   //A 三个接口一个完成
                new Interface("B", 15, 10),
                new Interface("A", 5, 2),
                new Interface("A", 5, 5),
                new Interface("A", 5, 5),
                new Interface("B", 5, 5)  //B两个接口  一个完成
                // 更多接口数据...
        );
    }
}

@Data
// 接口类，用于模拟接口数据
class Interface {
    private String grade; // 接口等级
    private int total; // 接口总数
    private int completed; // 已完成数


    public Interface(String grade, int total, int completed) {
        this.grade = grade;
        this.total = total;
        this.completed = completed;

    }

    // getter和setter省略
}
